﻿using System;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Ink;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using System.Collections.Generic;
using System.Runtime.Serialization;




namespace MoviTiendas.Logica
{
     [DataContract]
    public class Cliente
    {
        // ------------------------------------------------------------------------------------
        // Atributos
        // ------------------------------------------------------------------------------------

        /**
         * Nombre del cliente
         */
         [DataMember]
        public String nombre { get; set; }

        /**
         * Dirección del cliente
         */
            [DataMember]
        public String direccion { get; set; }

        /**
         * Barrio del cliente
         */
            [DataMember]
        public Barrio barrio { get; set; }

        /**
         * Domicilios que el cliente realizó en el pasado
         */
            [DataMember]
        public List<Carrito> historial { get; set; }

        /**
         * Carritos actuales
         */
            [DataMember]
        public List<Carrito> carritos { get; set; }
         
        /**
         * Barrio que representa a las tiendas favoritas del cliente
         */
            [DataMember]
        public Barrio tiendasFavoritas { get; set; }

        /**
         * Listas del cliente
         */
            [DataMember]
        public List<Lista> listas { get; set; }


        // ------------------------------------------------------------------------------------
        // Constructor
        // ------------------------------------------------------------------------------------

        /**
         * Constructor de la clase
         */
        public Cliente(String nNombre, String nDireccion, Barrio nBarrio)
        {
            nombre = nNombre;
            direccion = nDireccion;
            barrio = nBarrio;
            historial = new List<Carrito>();
            carritos = new List<Carrito>();
            tiendasFavoritas = new Barrio("Favoritas");
            listas = new List<Lista>();
        }


        // ------------------------------------------------------------------------------------
        // Métodos
        // ------------------------------------------------------------------------------------


        public void agregarItemACarrito(Item item)
        {
            bool encontro = false;

            for (int i = 0; i < carritos.Count && !encontro; i++)
            {
                if (item.tienda.Equals(carritos[i].tienda))
                {
                    encontro = true;
                    carritos[i].AgregarItemACarrito(item);
                }
            }

            if (!encontro)
            {
                Carrito carr = new Carrito(item.tienda);
                carr.AgregarItemACarrito(item);
                carritos.Add(carr);
            }
        }

        public void pedirDomicilio(Carrito carrito)
        {

            carritos.Remove(carrito);
            historial.Insert(0,carrito);
        }
    }
}
